package com.atguigu.gmall.feign.ware;

import com.atguigu.gmall.feign.ware.fallback.WareFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * FeignClient：
 *   1、没有指定url。就给value指定的微服务发请求
 *      1.1、先去注册中心要到这个微服务真的ip地址
 *      1.2、再给真实ip地址的指定路径; 发送请求即可
 *   2、指定Url。就给指定地址发请求即可
 */

@FeignClient(value="ware-manage",url = "http://localhost:9001",
        fallback = WareFeignClientFallBack.class)
public interface WareFeignClient {


    /**
     * 声明式的 HTTP 客户端
     *
     * 1、请求路径；  所有的 @RequestMapping或者+url 拼在一起就是要去的位置。
     * 2、请求方式：  @XxxMapping
     * 3、请求参数：
     *    1）、查询字符串[@RequestParam]： http://localhost:9001/hasStock?skuId=1&num=1
     *    2）、请求体[@RequestBody]：
     * 4、请求头
     *    @RequestHeader("token") String token
     *
     * @param skuId
     * @param num
     * @return
     */
    @GetMapping("/hasStock")
    String checkStock(@RequestParam("skuId") Long skuId,
                      @RequestParam("num") Integer num);

}
